function getglobal(key){
	if(key){
		return getApp().globalData[key]
	}else{
		return getApp().globalData
	}
	
}

let timeout = null;
/**
 * 防抖：一定时间内，只有最后一次操作，再过wait毫秒后才执行函数
 * 
 * @param {Function} func 要执行的回调函数 
 * @param {Number} wait 延时的时间
 * @param {Boolean} immediate 是否立即执行 
 * @return null
 */
function debounce(func,obj,wait = 500, immediate = false) {
	// 清除定时器
	if (timeout !== null) clearTimeout(timeout);
	// 立即执行，此类情况一般用不到
	if (immediate) {
		var callNow = !timeout;
		timeout = setTimeout(function() {
			timeout = null;
		}, wait);
		if (callNow) typeof func === 'function' && (obj?func(obj):func());
	} else {
		// 设置定时器，当最后一次操作后，timeout不会再被清除，所以在延时wait毫秒后执行func回调方法
		timeout = setTimeout(function() {
			// console.log(typeof func)
			typeof func === 'function' && (obj?func(obj):func());
		}, wait);
	}
}

function go_url(url,mode,delta){
	// console.log(url);
	// console.log(mode);
	switch(mode){
		case 'navigateTo':
		uni.navigateTo({
			url: url
		})
		break;
		case 'redirectTo':
		uni.redirectTo({
			url: url
		})
		break;
		case 'reLaunch':
		uni.reLaunch({
			url: url
		})
		break;
		case 'switchTab':
		uni.switchTab({
			url: url
		})
		break;
		case 'navigateBack':
		uni.navigateBack({
			delta: delta
		})
		break;
		case 'preloadPage':
		uni.preloadPage({
			url: url
		})
		break;
		default:
		uni.navigateTo({
			url: url
		})
	}
};

// 通过值查找到对象 并返回 非嵌套
function findObj(value,arr,key){
	if(value==null||value==undefined||(typeof value !='string'&&typeof value !='number')){
		return {}
	}
	const obj = arr.find(function (o) {
		return o[key||'id'] == value
	})
	return obj
};

function Toast(t,duration,icon){
	uni.showToast({
		title: t||'',
		icon: icon||'none',
		duration: duration||1500
	})
};
//生成从minNum到maxNum的随机数
function randomNum(minNum,maxNum){ 
	switch(arguments.length){ 
		case 1: 
			return parseInt(Math.random()*minNum+1,10); 
		break; 
		case 2: 
			return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); 
		break; 
			default: 
				return 0; 
			break; 
	} 
};

// 去空格
function trim(str, pos = 'both') {
	if (pos == 'both') {
		return str.replace(/^\s+|\s+$/g, "");
	} else if (pos == "left") {
		return str.replace(/^\s*/, '');
	} else if (pos == 'right') {
		return str.replace(/(\s*$)/g, "");
	} else if (pos == 'all') {
		return str.replace(/\s+/g, "");
	} else {
		return str;
	}
};
// 会议是否过期/未到时间 0未到时间 1在时间范围内 2过期
function checkMeetTime(dtime,start,end,tip) {
	if(!dtime || !start || !end){
		return '未传入时间数据'
	}
	let dtimeFormat = isNaN(dtime);
	let startFormat = isNaN(start); //true 2020-12-15格式  false 毫秒格式
	let endFormat = isNaN(end);
	
	let dateTime = dtimeFormat?new Date(dtime.replace(/-/g,'/')).getTime():dtime;
	let startTime = startFormat?new Date(start.replace(/-/g,'/')).getTime():start;
	let endTime = endFormat?new Date(end.replace(/-/g,'/')).getTime():end;
	if(dateTime<startTime){//小于开始时间
		return 0;
	}else if(dateTime>=startTime&&dateTime<endTime){
		return 1;
	}else if(dateTime>=endTime){
		return 2;
	}
	return 3;
};
function previewImage(url) {
	if(!url) return
	uni.previewImage({
		urls: [url],
		longPressActions: {
			itemList: ['发送给朋友', '保存图片', '收藏'],
			success: function(data) {
				console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
			},
			fail: function(err) {
				console.log(err.errMsg);
			}
		}
	});	
}
function previewImages(imgs,current) {
	if(!imgs) return
	uni.previewImage({
		current: typeof imgs === 'string' ? 0 : current,
		urls: typeof imgs === 'string' ? [imgs] : imgs,
		longPressActions: {
			itemList: ['发送给朋友', '保存图片', '收藏'],
			success: function(data) {
				console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
			},
			fail: function(err) {
				console.log(err.errMsg);
			}
		}
	});	
}
// 比较计算时间间隔
function compareTimeInterval(time1,time2,time){
    if(!time1||!time2) return false
	let d1 = new Date(time1.replace(/-/g,'/'))
	let t1 = d1.getTime()
	let d2 = new Date(time2.replace(/-/g,'/'))
	let t2 = d2.getTime()
	const t = time||600000
	return t1-t2> t?true:false
};
// 预览文档
function openDocument(fileurl){
	if(!fileurl) return
	uni.downloadFile({
		url: fileurl, //仅为示例，并非真实的资源
		success: res => {
			console.log('-----------');
			console.log(fileurl);
			console.log(res);
			console.log('-----------');
			if (res.statusCode === 200) {
				//打开文档查看
				uni.openDocument({
					filePath: res.tempFilePath,
					success: function(res) {},
					fail:err=>{
						uni.showToast({
							title: '预览失败，请稍后再试',
							icon: 'none'
						})
					}
				});
			}else{
				uni.showToast({
					title: '预览失败，请稍后再试',
					icon: 'none'
				})
			}
		},
		fail: err=>{
			console.log(err);
			uni.showToast({
				title: '预览失败，请稍后再试',
				icon: 'none',
				duration: 10000
			})
		}
	});
};
function setHtmlStr(details){
	var texts='';//待拼接的内容
	while(details.indexOf('<img')!=-1){//寻找img 循环
		texts+=details.substring('0',details.indexOf('<img')+4);//截取到<img前面的内容
		details = details.substring(details.indexOf('<img')+4);//<img 后面的内容
		if(details.indexOf('style=')!=-1 && details.indexOf('style=')<details.indexOf('>')){
			texts+=details.substring(0,details.indexOf('style="')+7)+"max-width:100%;height:auto;margin:0 auto;";//从 <img 后面的内容 截取到style= 加上自己要加的内容
			details=details.substring(details.indexOf('style="')+7); //style后面的内容拼接
		}else{
			texts+=' style="max-width:100%;height:auto;margin:0 auto;" ';
		}
	}
	texts+=details;//最后拼接的内容
	return texts
};

function JSONToUrl(requestParams) {
	let params = [];
	Object.entries(requestParams).forEach(([key, value]) => {
		// let param = key + '=' + encodeURI(value);
		let param = key + '=' + value
		params.push(param);
	});
	return '?' + params.join('&');
}

function UrlToJSON(url){
	var hash;
	var myJson = {};
	var hashes = url.slice(url.indexOf('?') + 1).split('&');
	for (var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		myJson[hash[0]] = hash[1];
	}
	return myJson
}
export default {
	getglobal,
	debounce,
	go_url,
	Toast,
	randomNum,
	trim,
	checkMeetTime,
	previewImage,
	previewImages,
	openDocument,
	findObj,
	setHtmlStr,
	compareTimeInterval,
	JSONToUrl,
	UrlToJSON
};